// 2. 算法题之「两数之和」
//    给定一个整数数组和一个目标值，找出数组中和为目标值的两个数。
//   你可以假设每个输入只对应一种答案，且同样的元素不能被重复利用。
//   示例：
//   ```javascript
//   给定 nums = [2, 7, 11, 15], target = 9
//   因为 nums[0] + nums[1] = 2 + 7 = 9
//   所以返回 [0, 1]
//   ```
//   > 参考链接：https://github.com/Advanced-Frontend/Daily-Interview-Question/issues/136

function getResultItem(arr, target) {
  const len = arr.length;
  for(let i = 0; i< len; i++ ) {
    let position = arr.indexOf(target - arr[i]);
    if (position != -1 && position !== i) { 
      return [arr[i], arr[position]]
    }
  }
  return []
}



let nums = [0, 2, 5, 8, 2, 3, 7, 9, 5, 4, 10, 7], target = 9;

console.log(getResultItem(nums, target))


/**
 * 扩展，输出所有能组成 target 的数组，且同样的元素不能被重复利用。
 * */ 
function getTargetSum(arr, target) {
  const result = [];
  const len = arr.length;
  let list = arr.slice();
  for(let i = 0; i < len; i++) {
    let position = list.indexOf(target - list[i]);
    if(position != -1 && position !== i) {
      result.push([arr[i], arr[position]]);
      list[i] = null;
      list[position] = null;
    }
  }
  
  return result
}

console.log(getTargetSum(nums, target))